Matlab发送电子邮件email实现程序实时监控

运行一些比较大的计算程序,经常要运行好几个小时,甚至按天计算。为了能实时监控Matlab的运行情况,可以让电脑在运行完毕Matlab程序以后,给自己发送一个电子邮件(发送短信比较难),手机邮件基本已可以达到实时提醒的效果,流程如下:

  • Matlab程序运行…
  • 运行完毕以后,Matlab调用smtp邮件(163,gmail等)发送邮件

注:Matlab支持smtp邮件,163,qq邮箱,gmail都可以使用;邮件亦可添加附件,将计算结果等作为附件发送邮件保存。

这样我就可以实时知道自己的程序运行情况,代码如下:

Matlab发送电子邮件email实现程序实时监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
% MToM('Program Over','**** Program has finished');
function MToM()
subject = '邮件主题';
content = '邮件内容';
MailAddress = '邮箱地址@gmail.com';
password = '邮箱密码';
DataPath = {[pwd,filesep,'Result.mat'];...
[pwd,filesep,'XXXX.mat']};
% pwd当前目录;filesep='\';附件地址DataPath可以是一组内容;
setpref('Internet','E_mail',MailAddress);%
setpref('Internet','SMTP_Server','smtp.gmail.com');
% STMP服务器地址,不同域名的邮箱地址有不同SMTP服务器地址
setpref('Internet','SMTP_Username',MailAddress);%
setpref('Internet','SMTP_Password',password);
props = java.lang.System.getProperties;%
props.setProperty('mail.smtp.auth','true');%
props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
props.setProperty('mail.smtp.socketFactory.port','465');
sendmail(MailAddress,subject,content,DataPath);%

Matlab代码保护

有时候程序在公共服务器上运行,邮箱密码若以明码方式写在程序中不太合适。
Matlab自带代码保护功能,在命令行窗口运行以下代码,便可生成“同名.p”文件,不可查询。
此时,再删除原MToM.m文件,程序正常运行,起到保护作用。

1
pcode MToM

Matlab计算结果另存

CToF()–在上主程序上一级文件夹,新建文件夹Results,保存所有计算结果,已防止辛苦计算的结果不小心被覆盖。

1
2
3
4
5
function [status, msg, msgID] = CToF()
destination = '..\Results';
source = [pwd,filesep,'*.mat'];
[status, msg, msgID] = copyfile(source, destination);
end

Matlab主程序调用

主程序添加以下代码,调用“MToM()”,“CToF()”。

1
2
3
4
%------------------
MToM();
status = CToF();
%------------------

附:

1
2
3
4
当前路径下 (mat和m文件在一起):  load  ***.mat; 
在下一级路径下: load .\下一级路径的文件名\***.mat;
在上一级路径下: load ..\***.mat;
在平行文件夹内: load ..\平行的文件夹\***.mat;

http://www.ilovematlab.cn/thread-56627-1-1.html
https://blog.csdn.net/ouening/article/details/52079747